package cn.fl.system.transform;

import java.util.ArrayList;
import java.util.List;

import cmm.user.facade.system.dto.SysUsrDTO;
import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.system.vo.SysUsrAppExtVO;
import cn.fl.system.vo.SysUsrVO;

/**
 * @Description: 系统用户表 转换器
 * VO是客户端传递数据到服务端进行转换的数据 
 * VO转换数据变成DTO传递到服务端 
 * VO不能在服务端出现
 */
public class SysUsrVOTransform {


	/**
	 * DTO 转  VO
	 * @param po SysUsrDTO
	 * @return SysUsrVO
	 */
	public static SysUsrVO toVO(SysUsrDTO dto) {
		SysUsrVO  vo = null;
		if (dto != null) {
			vo = new SysUsrVO();
			vo.setId(dto.getId());
			vo.setUsrNm(dto.getUsrNm());//系统用户名（登录名）
			vo.setOpenId(dto.getOpenId());//微信OpenID
			vo.setMp(dto.getMp());//手机号
			vo.setEMail(dto.getEMail());//邮箱
			vo.setQq(dto.getQq());//QQ
			vo.setIsSysDef(dto.getIsSysDef());//是否系统内置
			vo.setIsValid(dto.getIsValid());//是否有效（1：是，0：否）
			vo.setIsDel(dto.getIsDel());//是否删除（1：是，0：否）
			vo.setIsSysDefNmFromDataAuth(dto.getIsSysDefNmFromDataAuth());
			vo.setIsSysDefFromDataAuth(dto.getIsSysDefFromDataAuth());
			vo.setRefId(dto.getRefId());
			vo.setRefRlNm(dto.getRefRlNm());
			vo.setRefPwd(dto.getRefPwd());
			vo.setRefSysCd(dto.getRefSysCd());
			vo.setRefRegTypCd(dto.getRefRegTypCd());
			vo.setRefRegDt(dto.getRefRegDt());
			vo.setRefIsValid(dto.getRefIsValid());
			vo.setRefIsDel(dto.getRefIsDel());
			vo.setRegChlCd(dto.getRegChlCd());
			vo.setRegChlCdNm(dto.getRegChlCdNm());
			vo.setSplId(dto.getSplId());
			vo.setIsSplChg(dto.getIsSplChg());
			vo.setSplNm(dto.getSplNm());
			//附加转换
			vo.setIsValidNm(dto.getIsValidNm());//人员状态
			vo.setUsrTypCdNm(dto.getUsrTypCdNm());//用户类型
			vo.setIsChgNm(dto.getIsChgNm());//是否主管
			vo.setChg(dto.isChg());//是否主管是否选中
			vo.setOrgCd(dto.getOrgCd());//组织架构代码
			vo.setOrgCdNm(dto.getOrgCdNm());//组织架构代码前端显示
			vo.setSysUsrSysRVO(SysUsrSysRVOTransform.toVO(dto.getSysUsrSysRDTO()));
			vo.setRefIsValidNm(dto.getRefIsValidNm());
			vo.setCrtTm(dto.getCrtTm());//创建时间
			vo.setCrtUsrId(dto.getCrtUsrId());//创建人
			vo.setMdfTm(dto.getMdfTm());//修改时间
			vo.setMdfUsrId(dto.getMdfUsrId());//修改人
			vo.setUsrTypCd(dto.getUsrTypCd());
			vo.setRefRegTypCdNm(dto.getRefRegTypCdNm());
			vo.setRefIsSysDef(dto.getRefIsSysDef());
			List<SysUsrAppExtVO> appExtList = SysUsrAppExtVOTransform.toVOList(dto.getSysUsrAppExtDTOList());
			if(CollectionUtils.isNotEmpty(appExtList)){
				vo.setSysUsrAppExtVO(appExtList.get(0));
			}
			vo.setSplBuOrgCdNm(dto.getSplBuOrgCdNm());
			vo.setSplCityNm(dto.getSplCityNm());
			vo.setSplProvinceNm(dto.getSplProvinceNm());
			vo.setEmployeePosCd(dto.getEmployeePosCd());//供应商员工职位
			vo.setEmployeePosCdNm(dto.getEmployeePosCdNm());//供应商员工职位

		}
		return vo;
	}

	/**
	 * VO 转 DTO
	 * @param dto SysUsrVO
	 * @return SysUsrDTO
	 */
	public static SysUsrDTO toDTO(SysUsrVO vo) {
		SysUsrDTO dto = null;
		if (vo != null) {
			dto = new SysUsrDTO();
			dto.setId(vo.getId());
			dto.setUsrNm(vo.getUsrNm());//系统用户名（登录名）
			dto.setOpenId(vo.getOpenId());//微信OpenID
			dto.setMp(vo.getMp());//手机号
			dto.setEMail(vo.getEMail());//邮箱
			dto.setQq(vo.getQq());//QQ
			dto.setIsSysDef(vo.getIsSysDef());//是否系统内置
			dto.setIsValid(vo.getIsValid());//是否有效（1：是，0：否）
			dto.setIsDel(vo.getIsDel());//是否删除（1：是，0：否）
			dto.setIsSysDefNmFromDataAuth(vo.getIsSysDefNmFromDataAuth());
			dto.setIsSysDefFromDataAuth(vo.getIsSysDefFromDataAuth());
			dto.setCrtTm(vo.getCrtTm());//创建时间
			dto.setCrtUsrId(vo.getCrtUsrId());//创建人
			dto.setMdfTm(vo.getMdfTm());//修改时间
			dto.setMdfUsrId(vo.getMdfUsrId());//修改人
			dto.setRegChlCd(vo.getRegChlCd());
			dto.setRegChlCdNm(vo.getRegChlCdNm());
			dto.setSysUsrSysRDTO(SysUsrSysRVOTransform.toDTO(vo.getSysUsrSysRVO()));
			dto.setRefId(vo.getRefId());
			dto.setRefRlNm(vo.getRefRlNm());
			dto.setRefPwd(vo.getRefPwd());
			dto.setRefSysCd(vo.getRefSysCd());
			dto.setRefRegTypCd(vo.getRefRegTypCd());
			dto.setRefRegDt(vo.getRefRegDt());
			dto.setRefIsValid(vo.getRefIsValid());
			dto.setRefIsDel(vo.getRefIsDel());
			dto.setUsrTypCd(vo.getUsrTypCd());
			dto.setSplId(vo.getSplId());
			dto.setIsSplChg(vo.getIsSplChg());
			dto.setSplNm(vo.getSplNm());
			//附加属性开始
			dto.setIsChgNm(vo.getIsChgNm());//是否主管
			dto.setEmployeePosCd(vo.getEmployeePosCd());//供应商员工职位
			dto.setEmployeePosCdNm(vo.getEmployeePosCdNm());//供应商员工职位
		}
		return dto;
	}

	/**
	 * DTO集合 转 VO集合
	 * @param list List<SysUsr>
	 * @return List<SysUsrDTO>
	 */
	public static List<SysUsrVO> toVOList(List<SysUsrDTO> list) {
		List<SysUsrVO>  voList = new ArrayList<SysUsrVO>();
		if(CollectionUtils.isNotEmpty(list)){
			for (SysUsrDTO dto : list) {
				voList.add(toVO(dto));
			}
		}
		return voList;
	}

	/**
	 * VO集合 转 DTO集合
	 * @param list List<SysUsr>
	 * @return List<SysUsrDTO>
	 */
	public static List<SysUsrDTO> toDTOList(List<SysUsrVO> list) {
		List<SysUsrDTO>  dtoList = new ArrayList<SysUsrDTO>();
		if(CollectionUtils.isNotEmpty(list)){
			for (SysUsrVO vo : list) {
				dtoList.add(toDTO(vo));
			}
		}
		return dtoList;
	}
}